import Vue from 'vue'
import Vuex from 'vuex'
// 1. 导入包
import createState from 'vuex-persistedstate'
// 导入需要的 API 接口
import { getUserAPI } from '@/api/user.js'

Vue.use(Vuex)

// console.log(process.env.NODE_ENV)

// 注意：当前项目，业务比较简单，必须要拆模块
export default new Vuex.Store({
  // 防止在无意之间，直接在组件中修改 vuex 的数据
  // process.env.NODE_ENV 是一个全局的变量，不需要定义，即可使用
  // 它的值只有两个，分别是 production 和 development
  strict: process.env.NODE_ENV === 'development',
  // 2. 配置 vuex 的插件
  plugins: [createState()],
  state: {
    // 1. 登录成功之后，需要把 token，存储到这个位置
    token: '',
    // 用户的基本信息，默认为空对象
    user: {}
  },
  mutations: {
    // 2. 定义修改 token 值的 mutation 函数
    updateToken(state, token) {
      state.token = token
    },
    // 更新用户信息的 mutation
    updateUser(state, obj) {
      state.user = obj
    }
  },
  actions: {
    // 在 vue 中，任何一个函数，如果不调用，不会自定执行（生命周期函数除外）
    // 发起请求，获取用户的基本信息
    async initUser(ctx) {
      // 如果请求成功，则调用相应的 mutation 函数，把用户信息，存储到 state 中
      const { data: res } = await getUserAPI()
      if (res.code === 0) {
        // 获取数据成功
        ctx.commit('updateUser', res.data)
      }
    }
  },
  modules: {
  }
})
